#include <stdio.h>

//文件的打开和关闭，读
int main1()
{
    // FILE *fp = fopen("G:\\Desktop\\新建 文本文档 (2).txt", "r");
    FILE *fp = fopen("G:/Desktop/b.txt", "r");

    if (fp == NULL)
    {
        printf("打开文件失败\n");
        return -1;
    }

    // printf("文件打开成功:%p\n", fp);
    char ch = fgetc(fp);
    //文件的字符读取
    //文件默认结尾为-1 io.h包中包含了EOF宏定义-1
    printf("%c", ch);
    //不能修改文件指针  文件在读取时光标流会自动向下移动
    ch = fgetc(fp);
    printf("%c", ch);
    fclose(fp);
    return 0;
}

//读取整个文件
int main()
{
    FILE *fp = fopen("G:/Desktop/b.txt", "r");

    if (!fp)
    {
        printf("打开文件失败\n");
        return -1;
    }
    // char ch = fgetc(fp);
    // printf("kkk%c", ch);
    char ch = fgetc(fp);

    //feof（文件指针）  判断文件是否到结尾 可以判断文本文件也可以判断二进制文件
    //如果到文件结尾返回值为 非0的值
    //如果没到文件结尾返回值为 0
    while (!feof(fp))
    {
        // printf("%d", feof(fp));
        printf("%c", ch);
        ch = fgetc(fp);
    }

    fclose(fp);
    return 0;
}

//文件的写
int main3()
{
    //以写的方式打开文件
    // 如果文件不存会创建一个新文件
    // 如果文件存在 会清空内容
    FILE *fp = fopen("G:/Desktop/b.txt", "w");
    if (!fp)
        return -1;
    char ch = 'a';
    //字符写入
    fputc(ch, fp);
    fclose(fp);
    return 0;
}

//写入一个完整文件
int main4()
{
    FILE *fp = fopen("G:/Desktop/b.txt", "w");
    if (!fp)
        return -1;
    char ch;
    while (1)
    {
        scanf("%c", &ch);
        if (ch == '@')
        {
            break;
        }
        fputc(ch, fp);
    }
    fclose(fp);
}